/*
 *  $Id: Interfaces.cs 1053 2010-05-19 10:05:23Z thenn.erannor $
 *	This file is a part of Ragima CCG.
 *	(C) 2008 Ragima development group.
 *
 *	Licensed under the terms of the GNU GPL License version 2.
 *
 */

using AgateLib.Geometry;

namespace Ragima {
    /// <summary>
    /// Интерфейс для сортировки по приоритету.
    /// </summary>
    public interface IPrioritized {
        int Priority { get; }
    }

    /// <summary>
    /// Интерфейс для изменения цен в мане.
    /// </summary>
    public interface IManaCostChanger : IPrioritized {
        bool Accept(Player player, Card card, ElementValues manas);
        void Change(Player player, Card card, ElementValues manas);
    }

    /// <summary>
    /// Интерфейс-собиратель для запросов эффектов и способностей
    /// </summary>
    public interface ICollector<T> where T: class {
        void Add(T item);
        void Add<D>() where D: T, new();
    }

    /// <summary>
    /// Интерфейс для отрисовки справки
    /// </summary>
    public interface IHelpProvider {
        bool DrawHelp(int x, int y);
    }

    /// <summary>
    /// Интерфейс для создания хинта
    /// </summary>
    public interface IHintable {
        Hint GetHint(Rectangle hintRect);
    }
}